Telegram Group & Telegram Channel
Python Hints
#Quick مثالی برای یک بحث: یک سری سوالات هست توی مصاحبه که واقعاً نیاز به درک درست از چندین جنبه داره. یک مثال میزنم و بعدش دیگه این سوال رو از مصاحبه‌هام حذف می‌کنم : مثلاً توی بکند؛ چرا به سریالایزر نیاز داریم ؟ من مدل دیتابیس رو دارم پکیج‌های مورد نیاز…
جواب این سوال ساده هست ولی من با یک مثال مهمترین دلایلش رو می‌گم :

توی فریمورکی مثل جنگو که اگر کار کرده باشید؛ حتما سریالایزر رو دارید؛ توی پایتون جا افتاده که برای باقی فریمورک‌ها هم از همین اسم استفاده می‌کنند.
فرض کنیم من از کاربر ۵ تا اطلاعات میگیریم تا رجیسترش کنم
{
"first_name": "Mo",
"last_name": "abbasi",
"channel": "pyhints",
"email": "[email protected]",
"phone": "09122020200"
}

این برای ثبت‌نام هست؛ برای لاگین :
{
"phone": "09122020200"
}

مشاهده پروفایل توسط دیگران:

{
"first_name": "Mo",
"last_name": "abbasi",
"channel": "pyhints",
}


ادیت پروفایل:

{
"first_name": "Mo",
"last_name": "abbasi",
"channel": "pyhints",
"phone": "09122020200"
}


همه‌ی این موارد با یک فیلد کم و زیاد کاملا مشابه هم هستند؛ اگر سریالایزر نبود برای ولیدکردن شماره تماس چون دیتا از نوع str هست هربار باید یادم بمونه که کدهای مربوط به ولید کردنش رو اجرا بذارم اگر یادم بره چی میشه ؟
شخص با شماره‌ای که ولید نیست توی سیستم ثبت‌نام میشه و دیگه هیچ‌وقت نمی‌تونه وارد سیستم بشه.
اما با وجود سریالایزر اگر جایی از کد ببینم دولوپری دیتای request رو داره می‌خونه فارغ از اینکه چیکار داره می‌کنه کد رو ناامن و همراه باگ می‌دونم.

همین ۱ مورد دوتا ویژگی خوب به من میده :
۱- ولیدیشن اصولی و یکپارچه برای کل سیستم
۲- عدم تکرار کد

اما کارهای دیگه‌ای هم هست که میشه کرد؛ فرض کنید یک دیتاتایپ خاص خودتون رو دارید و سمت دیتابیس با extension های مربوطه اضافه شده؛ به کمک سریالایزر می‌تونید مطمئن بشید اگر یک tuple براتون ارسال شده حتما از اون دیتاتایپ مدنظر هست (مثال vector2d جلسات کتابخونی رو یادتون هست ؟)

دیگه چکاری میشه کرد ؟
فرض کنید یک باگ توی دیتابیس پیدا شد یا یک نوع حمله مثل SQL Injection اونوقت فقط کافیه یکبار روی Base Serializer این مورد رو بررسی کنید و جلوگیری کنید (مثلا برای فیلد ایمیل / اسم‌ها) بعد هرجا برای فیلد ایمیل یا اسم‌ها ازین inherit می‌کنید بصورت خودکار SQL Injection prevention رو هم خواهید داشت.

به لطف جنگو شماه هیچکدوم ازین موارد رو نمی‌بینید اما توی فریمورک‌های دیگه باید با این مفاهیم آشنا باشید تا به درستی پیاده‌سازی کنید.



tg-me.com/pyHints/666
Create:
Last Update:

جواب این سوال ساده هست ولی من با یک مثال مهمترین دلایلش رو می‌گم :

توی فریمورکی مثل جنگو که اگر کار کرده باشید؛ حتما سریالایزر رو دارید؛ توی پایتون جا افتاده که برای باقی فریمورک‌ها هم از همین اسم استفاده می‌کنند.
فرض کنیم من از کاربر ۵ تا اطلاعات میگیریم تا رجیسترش کنم

{
"first_name": "Mo",
"last_name": "abbasi",
"channel": "pyhints",
"email": "[email protected]",
"phone": "09122020200"
}

این برای ثبت‌نام هست؛ برای لاگین :
{
"phone": "09122020200"
}

مشاهده پروفایل توسط دیگران:

{
"first_name": "Mo",
"last_name": "abbasi",
"channel": "pyhints",
}


ادیت پروفایل:

{
"first_name": "Mo",
"last_name": "abbasi",
"channel": "pyhints",
"phone": "09122020200"
}


همه‌ی این موارد با یک فیلد کم و زیاد کاملا مشابه هم هستند؛ اگر سریالایزر نبود برای ولیدکردن شماره تماس چون دیتا از نوع str هست هربار باید یادم بمونه که کدهای مربوط به ولید کردنش رو اجرا بذارم اگر یادم بره چی میشه ؟
شخص با شماره‌ای که ولید نیست توی سیستم ثبت‌نام میشه و دیگه هیچ‌وقت نمی‌تونه وارد سیستم بشه.
اما با وجود سریالایزر اگر جایی از کد ببینم دولوپری دیتای request رو داره می‌خونه فارغ از اینکه چیکار داره می‌کنه کد رو ناامن و همراه باگ می‌دونم.

همین ۱ مورد دوتا ویژگی خوب به من میده :
۱- ولیدیشن اصولی و یکپارچه برای کل سیستم
۲- عدم تکرار کد

اما کارهای دیگه‌ای هم هست که میشه کرد؛ فرض کنید یک دیتاتایپ خاص خودتون رو دارید و سمت دیتابیس با extension های مربوطه اضافه شده؛ به کمک سریالایزر می‌تونید مطمئن بشید اگر یک tuple براتون ارسال شده حتما از اون دیتاتایپ مدنظر هست (مثال vector2d جلسات کتابخونی رو یادتون هست ؟)

دیگه چکاری میشه کرد ؟
فرض کنید یک باگ توی دیتابیس پیدا شد یا یک نوع حمله مثل SQL Injection اونوقت فقط کافیه یکبار روی Base Serializer این مورد رو بررسی کنید و جلوگیری کنید (مثلا برای فیلد ایمیل / اسم‌ها) بعد هرجا برای فیلد ایمیل یا اسم‌ها ازین inherit می‌کنید بصورت خودکار SQL Injection prevention رو هم خواهید داشت.

به لطف جنگو شماه هیچکدوم ازین موارد رو نمی‌بینید اما توی فریمورک‌های دیگه باید با این مفاهیم آشنا باشید تا به درستی پیاده‌سازی کنید.

BY Python Hints


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/pyHints/666

View MORE
Open in Telegram


Python Hints Telegram | DID YOU KNOW?

Date: |

That strategy is the acquisition of a value-priced company by a growth company. Using the growth company's higher-priced stock for the acquisition can produce outsized revenue and earnings growth. Even better is the use of cash, particularly in a growth period when financial aggressiveness is accepted and even positively viewed.he key public rationale behind this strategy is synergy - the 1+1=3 view. In many cases, synergy does occur and is valuable. However, in other cases, particularly as the strategy gains popularity, it doesn't. Joining two different organizations, workforces and cultures is a challenge. Simply putting two separate organizations together necessarily creates disruptions and conflicts that can undermine both operations.

Launched in 2013, Telegram allows users to broadcast messages to a following via “channels”, or create public and private groups that are simple for others to access. Users can also send and receive large data files, including text and zip files, directly via the app.The platform said it has more than 500m active users, and topped 1bn downloads in August, according to data from SensorTower.Python Hints from es


Telegram Python Hints
FROM USA